/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.Seguridad.Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import pe.edu.pucp.Modelo.Password;
import pe.edu.pucp.Modelo.Usuario;
import pe.edu.pucp.Seguridad.DAO.ConfiguracionDAO;
import pe.edu.pucp.Seguridad.DAO.UsuarioDAO;
import pe.edu.pucp.Seguridad.Vista.RecuperarPassGUI;
import pe.edu.pucp.Util.Constante;
import pe.edu.pucp.Util.EmailHelper;
import pe.edu.pucp.Util.Encriptador;
import pe.edu.pucp.Util.ValHelper;

/**
 *
 * @author jorge
 */
public class RecuperarPassControlador {
    private UsuarioDAO m;
    private RecuperarPassGUI view;
    public RecuperarPassControlador(UsuarioDAO dao, RecuperarPassGUI rview){
        m=dao;
        view=rview;
        view.addCancelarListener(new cancelarListener());                
        view.addEnviarListener(new enviarCambioListener());        
    }
    
    public Password nuevoPass(String pass, Usuario usr){
        Password p = new Password();
        p.setPass(pass);              
        p.setEstadoPassword(m.buscarEstadoPass(Constante.ESTADO_PASSWORD_ACTIVO));
        p.setFechareg(new Date());
        p.setUsuario(usr);
        return p;
    }
    
    class cancelarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {            
            view.dispose();
        }        
    }  
    
    class enviarCambioListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {   
            Usuario usr = m.buscarUsuario(view.getNombUsr());
            Encriptador cripto=new Encriptador();
            String npass = ValHelper.generarPass((new ConfiguracionDAO()).buscarConfiguracion());            
            Password p = nuevoPass(cripto.encriptar(npass),usr);
            m.guardarPassword(p);                        
            EmailHelper.enviarCorreo(usr.getCorreo()+usr.getTipoCorreo().getExtension(), usr.getNombre(), usr.getNombusr(), npass);
            ValHelper.mostrarAviso("Se envió la nueva contraseña a su correo");
            view.dispose();
        }        
    }      
}
